package com.ktmall.ktmalluijava.utils;

import com.alibaba.fastjson.JSON;
import com.alibaba.fastjson.serializer.SerializerFeature;
import lombok.Getter;
import lombok.Setter;

/**
 * @author ZhouShuang
 * @version 17
 * @Title
 * @date 2025/5/8 下午7:23
 */
@Setter
@Getter
public class ResMsg<T>{
    private Integer code; //响应码
    private String msg;//响应信息
    private T data; //响应数据

    public ResMsg(){

    }

    public ResMsg(Integer code, String msg, T data){
        this.code = code ;
        this.msg = msg;
        this.data = data;
    }

    /**
     * 成功响应的结果（带响应的数据）
     * @param msg 响应的信息
     * @param data 响应的数据
     * @return
     * @param <T>
     */
    public static <T> String success(String msg, T data){
        return JSON.toJSONString(new ResMsg<T>(200,msg,data),  SerializerFeature.WriteMapNullValue, SerializerFeature.DisableCircularReferenceDetect);
    }

    /**
     * 成功的响应(不带响应的数据)
     * @param msg 响应的信息
     * @return
     * @param <T>
     */
    public static <T> String success(String msg){
        return JSON.toJSONString(new ResMsg<T>(200,msg,null), SerializerFeature.WriteMapNullValue,SerializerFeature.DisableCircularReferenceDetect);
    }

    /**
     * 失败的响应(带数据)
     * @param msg 响应的信息
     * @param data 响应的数据
     * @return
     * @param <T>
     */
    public static <T> String error(String msg,T data){
        return JSON.toJSONString(new ResMsg<>(500,msg,data), SerializerFeature.DisableCircularReferenceDetect);
    }

    /**
     * 失败的响应(不带数据)
     * @param msg 响应的信息
     * @return
     */
    public static String error(String msg){
        return JSON.toJSONString(new ResMsg<>(500,msg,null), SerializerFeature.WriteMapNullValue,SerializerFeature.DisableCircularReferenceDetect);
    }
}
